#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time   : 2021/3/24 20:18
# @Author : cjw
import re

if __name__ == '__main__':
    # findall: 匹配字符串中所有的符合正则的内容
    lst = re.findall(r'\d+', '我的电话号码：10086, 另外的号码: 10010')
    print(lst)

    # finditer: 匹配字符串中所有的内容，返回的是迭代器, group()方法返回匹配的内容
    ite = re.finditer(r'\d+', '我的电话号码：10086, 另外的号码: 10010')
    print(ite, type(ite), [ie.group() for ie in ite])

    # search: 全文匹配找到第一个结果就返回，返回的是Match类型对象
    ser = re.search(r'\d+', '我的电话号码：10086, 另外的号码: 10010')
    print(ser.group())

    # match: 从头开始匹配
    mch = re.match(r'\d+', '10086, 另外的号码: 10010')
    print(mch.group())

    # 预加载正则表达式
    obj = re.compile(r'\d+')
    ret = obj.finditer('我的电话号码：10086, 另外的号码: 10010')
    print(ret, type(ret), [re.group() for re in ret])

    s = """
    <div class='aaa'><span id='1'>裴钱</span></div>
    <div class='bbb'><span id='2'>小鱼怪</span></div>
    <div class='ccc'><span id='3'>暖暖</span></div>
    <div class='ddd'><span id='4'>莲花</span></div>
    """
    # re.S: 让.能匹配换行符, (?P<name>.*?): .*?匹配的内容存放在变量name中，通过group('name')可以拿到匹配的内容
    obj1 = re.compile(r"<div class='(?P<class>.*?)'><span id='(?P<id>\d+)'>(?P<name>.*?)</span></div>", re.S)
    result = obj1.finditer(s)
    print([[rt.group('class'), rt.group('id'), rt.group('name')] for rt in result])
